//是否为NULL
export function isNull(value) {
    return value === null || typeof (value) === 'undefined' || value === undefined || value === '';

}


//是否为空(包括空字符串、空格、null,{})
export function isEmpty(strings) {
    if (!isNull(strings)) { // 先判断是否为null，返回true ，判断是否为空字符串，返回true
        // 空对象
        if (strings instanceof Object) {
            if (JSON.stringify(strings) === "{}") {
                return true
            }

        }
        if ((strings + '').replace(/(^\s*)|(\s*$)/g, '').length === 0) { //已修正bug[当strings为数字时，会报strings.replace is not a function]
            return true;
        }
    } else {
        return true;
    }
    // 不为空返回false
    return false;
}


//list转json
export function listToJson(params) {
  let param_str = "";
  for (let i = 0; i < params.length; i++) {
        //循环LIST
        if (i === params.length - 1) {
            param_str += '"' + params[i].name + '":"' + params[i].value + '"';
        } else {
            param_str += '"' + params[i].name + '":"' + params[i].value + '",';
        }
    }
    if (param_str !== "") {
        param_str = "{" + param_str + "}";
    }
    return param_str;
}



export function syntaxHighLight(json) {
    json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    return json.replace(
        /("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,
        function(match) {
            let cls = 'number';
            if (/^"/.test(match)) {
                if (/:$/.test(match)) {
                    cls = 'key';
                } else {
                    cls = 'string';
                }
            } else if (/true|false/.test(match)) {
                cls = 'boolean';
            } else if (/null/.test(match)) {
                cls = 'null';
            }
            return '<span class="' + cls + '">' + match + '</span>';
        });
}

/**
 * jsonString必须是string对象
 * @param jsonString
 * @returns {*}
 */
export function syntaxHighlight(jsonString) {
    try {
        let obj = JSON.parse(jsonString);
        return syntaxHighLight(JSON.stringify(obj, undefined, 2));
    } catch (ex) {
        return jsonString;
    }
}

/**
 * 是否为数字
 */
export const isIntNum = function(val) {
    let regPos = /^\d+(\.\d+)?$/; //非负浮点数
    let regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    return regPos.test(val) || regNeg.test(val);
}
